package com.cs.paoyer.administration.exception;

import com.cs.paoyer.common.exception.ModuleExceptionInterface;
import com.cs.paoyer.common.exception.ExceptionVO;
import com.cs.paoyer.common.exception.ExceptionIdNotFound;
import com.cs.paoyer.common.exception.ModuleVO;

public class AdministrationSystemException implements ModuleExceptionInterface {

   /**
     * Informaci�n del m�dulo al que pertenece el error.
     */
    private static final int ADMIN_MODULE = 1;

   
    /**
     * Error al tratar de encriptar el password.
     */
    public static final int COULDNT_ENCRYPT_PASSWORD     = 
        ADMIN_MODULE * SYSTEM_EXCEPTION + 1;

    /**
     * Devuelve el ExceptionVO dependiendo el Id del mensaje
     * @param messageId int Identificador del Mensaje.
     * Este Mensaje tiene que estar Definido como constante.
     * @throws SystemException
     * @return ExceptionVO
     */
    public ExceptionVO getExceptionVO(int exceptionId) throws ExceptionIdNotFound {

        switch (exceptionId) {

          case COULDNT_ENCRYPT_PASSWORD:
            return new ExceptionVO(COULDNT_ENCRYPT_PASSWORD, ADMIN_MODULE,
              "No se pudo realizar la encriptaci�n de los passwords",
              "La encriptaci�n puede no haber podido ser realizada debido a la " +
              "no existencia del algoritmo de encriptamiento configurado.");
          default:
            throw new ExceptionIdNotFound(exceptionId);
        }
    }

    /**
         * Obtiene un objeto <code>ModuleVO</code> que contiene el nombre del modulo
     * y la clase que maneja las excepciones.
     *
     * @return Objeto <code>ModuleVO</code> que contiene el nombre del modulo
     * y la clase que maneja las excepciones.
     */
    public ModuleVO getModuleVO() {

        return new ModuleVO("ADMINISTRATION", this.getClass().getName());
    }
}